/*
 * @Author: Kiro AI Assistant
 * @Date: 2025-01-10
 * @Description: 播放模式枚举 - 定义音乐播放的不同模式
 */

import 'package:flutter/material.dart';

/// 播放模式枚举
/// 定义音乐播放器支持的播放模式
enum PlayMode {
  /// 列表循环
  /// 播放完整个列表后重新开始
  listLoop,

  /// 单曲循环
  /// 重复播放当前歌曲
  singleLoop,

  /// 随机播放
  /// 随机选择列表中的歌曲播放
  shuffle,
}

/// PlayMode 扩展方法
/// 提供播放模式的显示名称和图标
extension PlayModeExtension on PlayMode {
  /// 获取播放模式的显示名称
  String get displayName {
    switch (this) {
      case PlayMode.listLoop:
        return '列表循环';
      case PlayMode.singleLoop:
        return '单曲循环';
      case PlayMode.shuffle:
        return '随机播放';
    }
  }

  /// 获取播放模式的图标
  IconData get icon {
    switch (this) {
      case PlayMode.listLoop:
        return Icons.repeat_rounded;
      case PlayMode.singleLoop:
        return Icons.repeat_one_rounded;
      case PlayMode.shuffle:
        return Icons.shuffle_rounded;
    }
  }

  /// 获取播放模式的描述
  String get description {
    switch (this) {
      case PlayMode.listLoop:
        return '播放完整个播放列表后重新开始';
      case PlayMode.singleLoop:
        return '重复播放当前歌曲';
      case PlayMode.shuffle:
        return '随机播放列表中的歌曲';
    }
  }

  /// 获取下一个播放模式
  /// 用于循环切换播放模式
  PlayMode get next {
    switch (this) {
      case PlayMode.listLoop:
        return PlayMode.singleLoop;
      case PlayMode.singleLoop:
        return PlayMode.shuffle;
      case PlayMode.shuffle:
        return PlayMode.listLoop;
    }
  }

  /// 是否为循环模式
  bool get isLoop => this == PlayMode.listLoop || this == PlayMode.singleLoop;

  /// 是否为随机模式
  bool get isShuffle => this == PlayMode.shuffle;

  /// 是否为单曲循环
  bool get isSingleLoop => this == PlayMode.singleLoop;

  /// 是否为列表循环
  bool get isListLoop => this == PlayMode.listLoop;
}
